package com.ruoyi.manage.organization.domain;

import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.ruoyi.common.annotation.Dict;
import com.ruoyi.common.annotation.Excel;
import com.ruoyi.common.core.domain.BaseEntity;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Builder;
import lombok.Data;
import lombok.experimental.Tolerate;

import java.io.Serializable;
import java.math.BigDecimal;
import java.util.Date;
import java.util.List;


/**
 * 企业融资订单对象 oc_business_financing_order
 *
 * @author ruoyi
 * @date 2025-08-19
 */
@Data
@ApiModel(value="企业融资订单对象", description="企业融资订单")
@TableName("oc_business_financing_order")
@Builder
public class OcBusinessFinancingOrder extends BaseEntity implements Serializable {

    private static final long serialVersionUID=1L;


    /**
     *  id
     * 对应字典表： $column.dictTable ，对应字段值： ，对应字段名：$column.dictName
     */

    @Excel(name = "id")
    private  Long  id;

    /**
     *  匹配编号
     * 对应字典表： $column.dictTable ，对应字段值： ，对应字段名：$column.dictName
     */

    @Excel(name = "匹配编号")
    @ApiModelProperty(value = "匹配编号")
    private  String  machId;

    /**
     *  融资申请编号
     * 对应字典表： $column.dictTable ，对应字段值： ，对应字段名：$column.dictName
     */

    @Excel(name = "融资申请编号")
    @ApiModelProperty(value = "融资申请编号")
    private  String  applyId;

    /**
     *  订单编号
     * 对应字典表： $column.dictTable ，对应字段值： ，对应字段名：$column.dictName
     */

    @Excel(name = "订单编号")
    @ApiModelProperty(value = "订单编号")
    private  String  orderNo;

    /**
     *  机构路径
     * 对应字典表： $column.dictTable ，对应字段值： ，对应字段名：$column.dictName
     */

    @Excel(name = "机构路径")
    @ApiModelProperty(value = "机构路径")
    private  String  orgPath;

    /**
     *  机构id
     * 对应字典表： $column.dictTable ，对应字段值： ，对应字段名：$column.dictName
     */

    @Excel(name = "机构id")
    @ApiModelProperty(value = "机构id")
    private  Long  organizationId;

    /**
     *  机构名称
     * 对应字典表： $column.dictTable ，对应字段值： ，对应字段名：$column.dictName
     */

    @Excel(name = "机构名称")
    @ApiModelProperty(value = "机构名称")
    private  String  organizationName;

    /**
     *  机构类型
     * 对应字典表： $column.dictTable ，对应字段值： ，对应字段名：$column.dictName
     */

    @Excel(name = "机构类型")
    @ApiModelProperty(value = "机构类型")
    private  Long  organizationType;

    /**
     *  机构logo
     * 对应字典表： $column.dictTable ，对应字段值： ，对应字段名：$column.dictName
     */

    @Excel(name = "机构logo")
    @ApiModelProperty(value = "机构logo")
    private  String  logo;

    /**
     *  订单状态
     * 对应字典表： $column.dictTable ，对应字段值：orderState ，对应字段名：$column.dictName
     */

    @Dict(dicCode = "orderState")
    @Excel(name = "订单状态", dictType="orderState")
    @ApiModelProperty(value = "订单状态")
    private  String  orderState;

    /**
     *  客户经理id
     * 对应字典表： $column.dictTable ，对应字段值： ，对应字段名：$column.dictName
     */

    @Excel(name = "客户经理id")
    @ApiModelProperty(value = "客户经理id")
    private  Long  managerId;

    /**
     *  客户经理名称
     * 对应字典表： $column.dictTable ，对应字段值： ，对应字段名：$column.dictName
     */

    @Excel(name = "客户经理名称")
    @ApiModelProperty(value = "客户经理名称")
    private  String  managerName;

    /**
     *  授信金额
     * 对应字典表： $column.dictTable ，对应字段值： ，对应字段名：$column.dictName
     */

    @Excel(name = "授信金额")
    @ApiModelProperty(value = "授信金额")
    private  BigDecimal  creditAmount;

    /**
     *  授信时间
     * 对应字典表： $column.dictTable ，对应字段值： ，对应字段名：$column.dictName
     */

    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "授信时间", width = 30, dateFormat = "yyyy-MM-dd")
    @ApiModelProperty(value = "授信时间")
    private  Date  creditTime;

    /**
     *  用信金额
     * 对应字典表： $column.dictTable ，对应字段值： ，对应字段名：$column.dictName
     */

    @Excel(name = "用信金额")
    @ApiModelProperty(value = "用信金额")
    private  BigDecimal  loanAmount;

    /**
     *  用信开始时间
     * 对应字典表： $column.dictTable ，对应字段值： ，对应字段名：$column.dictName
     */

    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "用信开始时间", width = 30, dateFormat = "yyyy-MM-dd")
    @ApiModelProperty(value = "用信开始时间")
    private  Date  loanTime;

    /**
     *  融资顾问
     * 对应字典表： $column.dictTable ，对应字段值： ，对应字段名：$column.dictName
     */

    @Excel(name = "融资顾问")
    @ApiModelProperty(value = "融资顾问")
    private  String  financialAdvisor;

    /**
     *  还款状态
     * 对应字典表： $column.dictTable ，对应字段值：repaymentState ，对应字段名：$column.dictName
     */

    @Dict(dicCode = "repaymentState")
    @Excel(name = "还款状态", dictType="repaymentState")
    @ApiModelProperty(value = "还款状态")
    private  String  paymentState;

    /**
     *  创建时间
     * 对应字典表： $column.dictTable ，对应字段值： ，对应字段名：$column.dictName
     */

    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "创建时间", width = 30, dateFormat = "yyyy-MM-dd")
    @ApiModelProperty(value = "创建时间")
    private  Date  createTime;

    /**
     *  编辑时间
     * 对应字典表： $column.dictTable ，对应字段值： ，对应字段名：$column.dictName
     */

    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "编辑时间", width = 30, dateFormat = "yyyy-MM-dd")
    @ApiModelProperty(value = "编辑时间")
    private  Date  updateTime;

    /**
     *  版本
     * 对应字典表： $column.dictTable ，对应字段值： ，对应字段名：$column.dictName
     */

    @Excel(name = "版本")
    @ApiModelProperty(value = "版本")
    private  Long  version;

    /**
     *  删除标识
     * 对应字典表： $column.dictTable ，对应字段值： ，对应字段名：$column.dictName
     */

    @Excel(name = "删除标识")
    @ApiModelProperty(value = "删除标识")
    private  Long  deleted;

    /**
     *  产品id
     * 对应字典表： $column.dictTable ，对应字段值： ，对应字段名：$column.dictName
     */

    @Excel(name = "产品id")
    @ApiModelProperty(value = "产品id")
    private  Long  productId;

    /**
     *  产品名称
     * 对应字典表： $column.dictTable ，对应字段值： ，对应字段名：$column.dictName
     */

    @Excel(name = "产品名称")
    @ApiModelProperty(value = "产品名称")
    private  String  productName;

    /**
     *  产品额度下限
     * 对应字典表： $column.dictTable ，对应字段值： ，对应字段名：$column.dictName
     */

    @Excel(name = "产品额度下限")
    @ApiModelProperty(value = "产品额度下限")
    private  BigDecimal  amountLimitLower;

    /**
     *  产品额度上限
     * 对应字典表： $column.dictTable ，对应字段值： ，对应字段名：$column.dictName
     */

    @Excel(name = "产品额度上限")
    @ApiModelProperty(value = "产品额度上限")
    private  BigDecimal  amountLimitUpper;

    /**
     *  产品期望利率下限(单位:%)
     * 对应字典表： $column.dictTable ，对应字段值： ，对应字段名：$column.dictName
     */

    @Excel(name = "产品期望利率下限(单位:%)")
    @ApiModelProperty(value = "产品期望利率下限(单位:%)")
    private  BigDecimal  interestRateLimitLower;

    /**
     *  产品期望利率上限(单位:%)
     * 对应字典表： $column.dictTable ，对应字段值： ，对应字段名：$column.dictName
     */

    @Excel(name = "产品期望利率上限(单位:%)")
    @ApiModelProperty(value = "产品期望利率上限(单位:%)")
    private  BigDecimal  interestRateLimitUpper;

    /**
     *  产品贷款期限下限
     * 对应字典表： $column.dictTable ，对应字段值： ，对应字段名：$column.dictName
     */

    @Excel(name = "产品贷款期限下限")
    @ApiModelProperty(value = "产品贷款期限下限")
    private  Long  loanPeriodLimitLower;

    /**
     *  产品贷款期限上限
     * 对应字典表： $column.dictTable ，对应字段值： ，对应字段名：$column.dictName
     */

    @Excel(name = "产品贷款期限上限")
    @ApiModelProperty(value = "产品贷款期限上限")
    private  Long  loanPeriodLimitUpper;

    /**
     *  产品主担保方式
     * 对应字典表： $column.dictTable ，对应字段值： ，对应字段名：$column.dictName
     */

    @Excel(name = "产品主担保方式")
    @ApiModelProperty(value = "产品主担保方式")
    private  String  mainGuaranteeWay;

    /**
     *  产品二级担保方式
     * 对应字典表： $column.dictTable ，对应字段值： ，对应字段名：$column.dictName
     */

    @Excel(name = "产品二级担保方式")
    @ApiModelProperty(value = "产品二级担保方式")
    private  String  secondGuaranteeWay;

    /**
     *  产品特点
     * 对应字典表： $column.dictTable ，对应字段值： ，对应字段名：$column.dictName
     */

    @Excel(name = "产品特点")
    @ApiModelProperty(value = "产品特点")
    private  String  productFeature;

    /**
     *  产品还款方式
     * 对应字典表： $column.dictTable ，对应字段值： ，对应字段名：$column.dictName
     */

    @Excel(name = "产品还款方式")
    @ApiModelProperty(value = "产品还款方式")
    private  String  repaymentWay;

    /**
     *  机构路径
     * 对应字典表： $column.dictTable ，对应字段值： ，对应字段名：$column.dictName
     */

    @Excel(name = "机构路径")
    @ApiModelProperty(value = "机构路径")
    private  String  productOrgPath;

    /**
     *  产品图片
     * 对应字典表： $column.dictTable ，对应字段值： ，对应字段名：$column.dictName
     */

    @Excel(name = "产品图片")
    @ApiModelProperty(value = "产品图片")
    private  String  productLogo;

    /**
     *  是否作废
     * 对应字典表： $column.dictTable ，对应字段值： ，对应字段名：$column.dictName
     */

    @Excel(name = "是否作废")
    @ApiModelProperty(value = "是否作废")
    private  String  voidedFlag;

    /**
     *  站点ID
     * 对应字典表： $column.dictTable ，对应字段值： ，对应字段名：$column.dictName
     */

    @Excel(name = "站点ID")
    @ApiModelProperty(value = "站点ID")
    private  String  siteId;

    /**
     *  本地站点编号
     * 对应字典表： $column.dictTable ，对应字段值： ，对应字段名：$column.dictName
     */

    @Excel(name = "本地站点编号")
    @ApiModelProperty(value = "本地站点编号")
    private  String  siteCode;

    /**
     *  站点名称
     * 对应字典表： $column.dictTable ，对应字段值： ，对应字段名：$column.dictName
     */

    @Excel(name = "站点名称")
    @ApiModelProperty(value = "站点名称")
    private  String  siteName;

    /**
     *  优惠券id
     * 对应字典表： $column.dictTable ，对应字段值： ，对应字段名：$column.dictName
     */

    @Excel(name = "优惠券id")
    @ApiModelProperty(value = "优惠券id")
    private  String  ticketId;

    /**
     *  客户经理联系电话
     * 对应字典表： $column.dictTable ，对应字段值： ，对应字段名：$column.dictName
     */

    @Excel(name = "客户经理联系电话")
    @ApiModelProperty(value = "客户经理联系电话")
    private  String  managerPhoto;

    /**
     *  订单类型
     * 对应字典表： $column.dictTable ，对应字段值：orderType ，对应字段名：$column.dictName
     */

    @Dict(dicCode = "orderType")
    @Excel(name = "订单类型", dictType="orderType")
    @ApiModelProperty(value = "订单类型")
    private  Long  orderType;

    /**
     *  担保机构
     * 对应字典表： $column.dictTable ，对应字段值： ，对应字段名：$column.dictName
     */

    @Excel(name = "担保机构")
    @ApiModelProperty(value = "担保机构")
    private  String  guaranteeInstitution;

    /**
     *  承保意向确认时间
     * 对应字典表： $column.dictTable ，对应字段值： ，对应字段名：$column.dictName
     */

    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "承保意向确认时间", width = 30, dateFormat = "yyyy-MM-dd")
    @ApiModelProperty(value = "承保意向确认时间")
    private  Date  underwritingConfirmationTime;

    /**
     *  承保状态
     * 对应字典表： $column.dictTable ，对应字段值： ，对应字段名：$column.dictName
     */

    @Excel(name = "承保状态")
    @ApiModelProperty(value = "承保状态")
    private  String  underwritingStatus;

    /**
     *  承保时间
     * 对应字典表： $column.dictTable ，对应字段值： ，对应字段名：$column.dictName
     */

    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "承保时间", width = 30, dateFormat = "yyyy-MM-dd")
    @ApiModelProperty(value = "承保时间")
    private  Date  underwritingTime;

    /**
     *  承保原因
     * 对应字典表： $column.dictTable ，对应字段值： ，对应字段名：$column.dictName
     */

    @Excel(name = "承保原因")
    @ApiModelProperty(value = "承保原因")
    private  String  underwritingReason;


    @TableField(exist = false)
    private OcFinancingMatch financingMatch;

    @TableField(exist = false)
    private List<String> ids;
    @Tolerate
    public OcBusinessFinancingOrder(){}

    @TableField(exist = false)
    private OcOrderCredit ocOrderCredit;

}
